2017-03-10 1 views
0

형식 오류가 : newUser.save가 확산 연산자의 속성을 할당하기 전에합니다 (createNew 함수) 함수속성을 할당 한 후 저장 기능이 아닌 이유는 무엇입니까?

아닌 상기 userModel 객체 (몽구스 의해 설계와 같은)의 기능을 할당하지만 후, 저장 기능을 갖는 더 이상 액세스 할 수 없습니다. 누군가 이것이 이것이 왜이고 어떻게 돌아 다니는지 설명 할 수 있습니까?

const mongoose = require('mongoose') 

const UserSchema = new mongoose.Schema({ 
    facebookid: String, 
    firstname: String, 
    lastname: String, 
    email: String, 
    timezone: Number, 
    gender: String, 
    invitationid: String, 
    referralid: String, 
    locale: String, 
    stage: String 
}) 

const User = mongoose.model('User', UserSchema) 

const createUser =() => new User() 

module.exports = { 
    createNew : userInfo => { 

    const userModel = createUser() 

    const newUser = { ...userModel, 
     facebookid: userInfo.fid, 
     firstname: userInfo.first_name, 
     lastname: userInfo.last_name, 
     locale: userInfo.locale, 
     timezone: userInfo.timezone, 
     gender: userInfo.gender, 
     invitationid: userInfo.invitationid, 
     referralid: userInfo.referralid, 
     stage: 'NA' 
    } 
    return newUser.save() 
    } 
} 

감사합니다. 메이트

답변

1

당신은 개체를 전달할 수 있습니다 -

module.exports = { 
createNew : userInfo => { 

const userModel = createUser({ 
    facebookid: userInfo.fid, 
    firstname: userInfo.first_name, 
    lastname: userInfo.last_name, 
    locale: userInfo.locale, 
    timezone: userInfo.timezone, 
    gender: userInfo.gender, 
    invitationid: userInfo.invitationid, 
    referralid: userInfo.referralid, 
    stage: 'NA' 
}) 

return userModel.save() 
} 
} 

그리고이

createUser = (user) => new User(user) 

수정 이제 userModel에 의해 반환되는 사용자를 포함하는 mongoose orm 그리고 save 함수에 접근 할 수 있습니다. 이전에는 mon에 의해 반환 된 사용자 객체를 사용하지 않았습니다. 거위, 새로운 생성 된

+0

나는 생성자의 매개 변수에 대해 몰랐다. 우아한 솔루션과 완벽하게 작동, 정말 고마워! – matetukacs

1

실제로 newUserUser 개체가 아닙니다.

...userModel은 "자신의"속성을 프로토 타입이 아닌 병합합니다. 이 같은

시도 뭔가 : 새로운 사용자를 생성하는 동안

const newUser = new User({/* your user */}); 
newUser.save(); 
+0

감사합니다. – matetukacs

0

하나 그냥 세부 사항, 문제와 관련된 아니라 가능한 솔루션 {...userModel}

당신이 일반 객체User 인스턴스의 직접 속성을 복사하는 등. 확장 클래스에서 상속 된 모든 속성 또는 메서드는 무시되며 가장 중요한 것은 프로토 타입 체인 자체가 손실된다는 것입니다.

save() 메서드는 아마도 moongoose의 Schema 클래스에 정의되어 있으므로이 기술로이 메서드를 잃어 버릴 수 있습니다.

다른 답변에 제안 된 해결책 중 하나라도 문제가 해결 될 것입니다.

관련 문제