2016-11-13 3 views
3

Я использую mongo и sails.js. Мое приложение позволяет пользователю создавать новую коллекцию в mongodb. Так как эта коллекция создается пользователем, в папке моделей нет модели парусов, поэтому я не могу запросить новую коллекцию (создавать, обновлять, удалять) и т. Д.Динамически создавать модели в Sails.js

Любые идеи о том, как я могу это сделать? Я искал встроенную функцию Model.native(), но нет модели, сгенерированной, когда пользователь создает новую коллекцию, чтобы она не работала.

+0

Вы не можете это сделать. Даже если вы создаете новую модель, вам необходимо перезагрузить сервер, чтобы сделать его видимым. – Bonanza

ответ

1

Это зависит от того, что вы хотите: создания новой модели или просто коллекции.

  • Модель

Если вы хотите генерировать новую модель и доступ с GET, POST, и т.д .., как при создании нового API с:

паруса сгенерируют api foo

вам понадобится для запуска команды, а затем перезапустите сервер, так как серверу необходимо отобразить модели с коллекциями db.

  • Коллекция

Если вы хотите, чтобы создать коллекцию считать, что вы не сможете получить доступ к этой коллекции через GET, POST, потому что это не модель.

MongoDB не создает базу данных или коллекцию до тех пор, пока не будет вставлен первый документ. Итак, если вы просто хотите, чтобы создать новую коллекцию в mongoDB, вы можете запустить свой собственный скрипт, чтобы сделать это.

Это в основном, как это работает и по дизайну. Когда вы вставляете некоторые данные, база данных и коллекция будут созданы.

Например, вы можете запустить сценарий python с python-shell.

from pymongo import MongoClient 
import testdata 
from pprint import pprint 

client = MongoClient() 
db  = client.test['collectionDummy'] 

import datetime 

class Temp(testdata.DictFactory): 
    id  = testdata.CountingFactory(10) 
    number = testdata.CountingFactory(10) 
    address = testdata.FakeDataFactory('address') 
    firstName = testdata.FakeDataFactory('firstName') 

for document in Temp().generate(2): 
    result = db.insert_one(document) 
Смежные вопросы